import mlflow
import pandas as pd

def generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="common_features",
    main_note="sizes_acts",
    note_to_compare="sizes_L2_without_acts",
    group_type="sim"
):
    all_rows = []

    for exp_id in experiment_ids:
        runs = mlflow.search_runs(
            experiment_ids=[exp_id],
            output_format="list"
        )

        for run in runs:
            note = run.data.params.get("note")
            fusion = run.data.params.get("SAE_fusion_strategy")
            group = run.data.params.get("group_type")

            if fusion != aggregation_function or group != group_type:
                continue

            dataset = run.data.params.get("dataset", f"Exp-{exp_id}")
            dim = int(run.data.params.get("embedding_dim", 0))
            topk = int(run.data.params.get("top_k", 0))

            row_key = (dataset, dim, topk)
            model_type = "main" if note == main_note else "compare" if note == note_to_compare else None
            if not model_type:
                continue

            metrics = {
                ("G/mean", model_type): run.data.metrics.get("CommonItemsNDCG20/median"),
                ("U/mean", model_type): run.data.metrics.get("NDCG20/mean"),
                ("U/min", model_type): run.data.metrics.get("NDCG20/min"),
                ("Pop", model_type): run.data.metrics.get("Popularity/mean"),
            }

            all_rows.append((row_key, metrics))

    # Combine metrics into a dictionary
    records = {}
    for key, metrics in all_rows:
        if key not in records:
            records[key] = {}
        records[key].update(metrics)

    df = pd.DataFrame.from_dict(records, orient="index")
    df.index.names = ["Dataset", "Dimensions", "TopK"]

    # Calculate % differences
    result_cols = []
    for metric in sorted(set(k[0] for k in df.columns)):
        main_col = (metric, "main")
        compare_col = (metric, "compare")
        percent_col = (metric, "% change")

        if main_col in df.columns and compare_col in df.columns:
            df[percent_col] = ((df[main_col] - df[compare_col]) / df[compare_col].abs()) * 100
            result_cols.extend([main_col, percent_col, compare_col])
        elif main_col in df.columns:
            result_cols.append(main_col)

    # Keep only main and percent change columns, sort them by metric
    df = df[result_cols]
    df = df.round(2)
    df = df.sort_index(axis=1, level=0).sort_values(by=["Dataset", "Dimensions", "TopK"])
    

    return df.reset_index()
import mlflow
import pandas as pd

def generate_common_features_table(experiment_ids, note="sizes_acts"):
    all_rows = []

    for exp_id in experiment_ids:
        runs = mlflow.search_runs(
            experiment_ids=[exp_id],
            filter_string=f"params.note = '{note}'",
            output_format="list"
        )

        for run in runs:
            params = run.data.params
            metrics = run.data.metrics
            
            if params.get("note") != note:
                continue
            

            dataset = params.get("dataset", f"Exp-{exp_id}")
            group_type = params.get("group_type", "unknown").capitalize()
            dim = int(params.get("embedding_dim", 0))
            topk = int(params.get("top_k", 0))
            value = metrics.get("common_features/mean", None)

            if value is None:
                continue

            row_key = (dim, topk)
            all_rows.append((row_key, (dataset, group_type), value))

    # Create dictionary for DataFrame
    records = {}
    for row_key, col_key, value in all_rows:
        if row_key not in records:
            records[row_key] = {}
        records[row_key][col_key] = value

    df = pd.DataFrame.from_dict(records, orient="index")
    df.index.names = ["Dimensions", "TopK"]

    # Reorder columns
    if not df.empty:
        datasets = ["MovieLens",'LastFM1k']
        subcols = ["Sim", "Random", "Div"]
        col_order = [(d, s) for d in datasets for s in subcols]
        df = df.reindex(columns=pd.MultiIndex.from_tuples(col_order))
        

    return df.reset_index()

Turn off activation

Podle predchozich vysledku predevsim v tabulce ... bylo videt, ze pocet common features napric skupinou je predevsim pro male topk velmi nizka v jednotkach. Je tedy mozne, ze neziskavame vsechny spolecne rysy, coz ma za nasledek nizsi performance.

Nase idea jak by slo toto teoreticky vyresit je, pro inferenci vypnout aktivacni funkci topk tak abychom ziskali vice features pro jednotlive uzivatele. Idea je takova, ze aktivace topk vybira opravdu ty nejdulezitejsi rysy ktere specifikuje daneho uzivatele. Muze se ale stat, ze ackoliv jsou nektere rysy velmi podobne, nejsou definovany tou samou featurou a tedy je nikdy nemuzeme ziskat. Pokud tedy aktivaci vypneme, mohli bychom ziskat vice rysu, a tedy spojit i rysy, ktere uzivatele sdileji.

Nechte me jen pripomenout, ze i kdyz vypneme aktivaci topk, stale je zapnuta aktivace ReLu. Neznamena to tedy, ze by vsechny (nebo temer vsechny) rysy byly aktivovany, ale pouze ty, ktere maji pozitivni hodnotu.

Pojdme se tedy nejdrive kouknout kolik nenulovych feature ziskame pokud aktivaci vypnemepro jednotlive uzivatele. Jako priklad jsme vzali Sparse autoencoder s dimenzi 2048 a topk 64. Vzali jsme nahodne 5000 uzivatelu a vypocetli jsme si pro ne kolik rysu je nenulovych. Vysledky jsou videt v nasledujicim grafu.

Je videt, ze prumerne je aktivovano 242 neuronu, minimalne 129 a maximalne 425. Graf pripomona gausovske rozdeleni. Pro dimenzi 2048 tedy ziskavame tedy okolo 1/10 rysu.

Nyni se podivame co to dela s poctem common features napric skupinou.

Common activated dimensions across group members

experiments = ['962723054918039068', '228719589483846826']
generate_common_features_table(experiments, note="sizes_L2_without_acts")
Dimensions TopK MovieLens LastFM1k
Sim Random Div Sim Random Div
0 1024 32 23.72 18.77 7.74 174.67 123.21 75.79
1 1024 64 40.53 35.36 20.22 133.19 94.79 64.41
2 1024 128 70.06 66.06 52.06 109.29 78.60 50.40
3 2048 32 80.01 67.87 52.05 353.28 247.54 139.73
4 2048 64 40.00 32.60 15.51 316.82 217.58 135.17
5 2048 128 67.20 59.70 30.67 171.65 111.93 70.58
6 4096 32 243.47 215.07 158.23 484.04 338.55 171.82
7 4096 64 67.19 51.37 27.59 573.66 398.36 222.79
8 4096 128 44.85 32.98 10.72 464.63 312.50 202.28

Vypnuti aktivace zapricilo, ze mame mnohem vice spolecnych feature. Stale plati to, ze cim je skupina diverznejsi, tim je mene spolecnych rysu. To plati bez vyjimky na vsechny sae a oba datasety. Nicmene, jiz nevidime zadny trend v zavislosti na dimenze a topk. Nelze odhadnout, kolik bude mit dany sae spolecnych rysu.

Jako velmi zajimave take beru fakt, ze pro dimenzi 2048 a topk 64, ktery vidite nahore mame pro sim skupiny vice spolednych rysu nez je prumer pres uzivatele. Znamena to, ze dani uzivatele museji mit nadprumerny pocet spolecnych rysu.

Nyni se podivame, co to provede s doporucovanim pro skupiny. Nejprve se podivame na common features.

SAE group recommendation performance for common features aggregation function and similar groups

Comparing the base variant with the variant where we turned off the activation function.

compare - base variant with activation function main - variant without activation function

experiment_ids = ['333391697323445885', '523100174176986081']
table = generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="common_features",
    main_note="sizes_L2_without_acts",
    note_to_compare="sizes_L2_with_acts",
    group_type="sim"
)
table
Dataset Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
0 LastFM1k 1024 32 14.53 0.52 0.59 -6.43 0.66 0.62 11.70 0.71 0.79 33.48 0.47 0.63
1 LastFM1k 1024 64 22.36 0.48 0.58 -1.91 0.62 0.61 10.61 0.73 0.80 24.57 0.50 0.63
2 LastFM1k 1024 128 -7.48 0.65 0.60 1.57 0.59 0.60 6.07 0.75 0.80 8.17 0.58 0.63
3 LastFM1k 2048 32 23.40 0.48 0.59 20.99 0.53 0.64 11.70 0.71 0.79 24.22 0.50 0.62
4 LastFM1k 2048 64 19.67 0.50 0.60 -1.38 0.62 0.62 9.69 0.74 0.81 22.87 0.52 0.64
5 LastFM1k 2048 128 -1.61 0.62 0.61 1.30 0.60 0.61 5.12 0.77 0.81 5.26 0.58 0.61
6 LastFM1k 4096 32 23.19 0.47 0.57 12.42 0.58 0.66 10.13 0.71 0.78 38.80 0.45 0.63
7 LastFM1k 4096 64 -15.35 0.62 0.52 2.95 0.61 0.63 12.08 0.72 0.81 24.80 0.50 0.62
8 LastFM1k 4096 128 -9.10 0.65 0.59 -1.13 0.62 0.62 8.26 0.75 0.81 15.73 0.55 0.63
9 MovieLens 1024 32 14.57 0.51 0.58 7.85 0.48 0.52 12.35 0.57 0.64 26.55 0.41 0.52
10 MovieLens 1024 64 139.68 0.22 0.54 9.41 0.46 0.50 6.08 0.62 0.65 10.00 0.48 0.53
11 MovieLens 1024 128 45.14 0.45 0.65 7.49 0.46 0.49 5.39 0.64 0.67 6.40 0.48 0.51
12 MovieLens 2048 32 21.89 0.56 0.68 4.96 0.46 0.49 15.75 0.57 0.66 27.54 0.42 0.54
13 MovieLens 2048 64 -7.81 0.49 0.45 20.84 0.40 0.48 13.16 0.57 0.65 20.48 0.44 0.53
14 MovieLens 2048 128 32.44 0.38 0.51 6.56 0.45 0.48 6.69 0.63 0.67 8.15 0.49 0.53
15 MovieLens 4096 32 -5.12 0.70 0.66 4.56 0.46 0.48 18.00 0.56 0.66 42.98 0.38 0.55
16 MovieLens 4096 64 -6.03 0.63 0.59 -3.68 0.53 0.51 9.65 0.60 0.66 24.68 0.43 0.53
17 MovieLens 4096 128 -1.80 0.57 0.56 6.78 0.46 0.49 9.37 0.59 0.65 9.54 0.47 0.51

Mean, std, min, max for above table

table.groupby(["Dataset"]).mean()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 2389.333333 74.666667 7.734444 0.554444 0.583333 3.153333 0.603333 0.623333 9.484444 0.732222 0.800000 21.988889 0.516667 0.626667
MovieLens 2389.333333 74.666667 25.884444 0.501111 0.580000 7.196667 0.462222 0.493333 10.715556 0.594444 0.656667 19.591111 0.444444 0.527778
table.groupby(["Dataset"]).std()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 1354.624671 42.332021 15.897782 0.078440 0.026458 8.414100 0.035707 0.018028 2.512126 0.021667 0.01118 10.868354 0.045552 0.008660
MovieLens 1354.624671 42.332021 46.621754 0.141814 0.075166 6.348108 0.033458 0.014142 4.416679 0.029627 0.01000 12.161706 0.037786 0.013017
table.groupby(["Dataset"]).max()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 4096 128 23.40 0.65 0.61 20.99 0.66 0.66 12.08 0.77 0.81 38.80 0.58 0.64
MovieLens 4096 128 139.68 0.70 0.68 20.84 0.53 0.52 18.00 0.64 0.67 42.98 0.49 0.55
table.groupby(["Dataset"]).min()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 1024 32 -15.35 0.47 0.52 -6.43 0.53 0.60 5.12 0.71 0.78 5.26 0.45 0.61
MovieLens 1024 32 -7.81 0.22 0.45 -3.68 0.40 0.48 5.39 0.56 0.64 6.40 0.38 0.51

SAE group recommendation performance for average aggregation function and similar groups

Comparing the base variant with the variant where we turned off the activation function.

compare - base variant with activation function main - variant without activation function

experiment_ids = ['333391697323445885', '523100174176986081']
table = generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="average",
    main_note="sizes_L2_without_acts",
    note_to_compare="sizes_L2_with_acts",
    group_type="sim"
)
table
Dataset Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
0 LastFM1k 1024 32 12.66 0.52 0.58 5.43 0.60 0.63 -0.43 0.81 0.81 -3.24 0.64 0.61
1 LastFM1k 1024 64 6.95 0.56 0.60 -3.11 0.61 0.59 -0.51 0.81 0.81 -3.39 0.65 0.63
2 LastFM1k 1024 128 0.26 0.57 0.57 -1.47 0.61 0.60 -0.63 0.81 0.81 -2.06 0.65 0.64
3 LastFM1k 2048 32 1.34 0.58 0.59 7.48 0.62 0.66 -3.21 0.82 0.79 -6.11 0.64 0.60
4 LastFM1k 2048 64 5.08 0.58 0.60 3.28 0.61 0.63 -2.04 0.82 0.81 -4.02 0.67 0.64
5 LastFM1k 2048 128 -4.53 0.65 0.62 -2.12 0.60 0.59 -1.03 0.82 0.81 -2.42 0.67 0.65
6 LastFM1k 4096 32 1.34 0.59 0.59 9.08 0.61 0.67 -4.33 0.81 0.78 -8.86 0.65 0.59
7 LastFM1k 4096 64 1.43 0.58 0.59 7.91 0.61 0.66 -2.61 0.82 0.80 -5.34 0.65 0.62
8 LastFM1k 4096 128 -2.56 0.62 0.60 0.45 0.61 0.62 0.07 0.82 0.82 4.59 0.64 0.67
9 MovieLens 1024 32 10.42 0.59 0.65 -7.89 0.53 0.49 -1.00 0.69 0.68 -2.19 0.58 0.57
10 MovieLens 1024 64 -8.23 0.74 0.68 -4.28 0.54 0.51 -0.95 0.70 0.69 -0.16 0.58 0.58
11 MovieLens 1024 128 2.84 0.66 0.68 -0.08 0.53 0.53 -0.07 0.69 0.69 -0.06 0.58 0.58
12 MovieLens 2048 32 -4.18 0.66 0.63 -32.40 0.54 0.37 -8.41 0.69 0.63 -15.03 0.58 0.49
13 MovieLens 2048 64 6.36 0.67 0.71 -10.21 0.53 0.48 -2.14 0.69 0.68 -3.79 0.58 0.56
14 MovieLens 2048 128 -2.75 0.70 0.68 -3.31 0.53 0.51 -0.20 0.69 0.69 -0.08 0.57 0.57
15 MovieLens 4096 32 -5.81 0.57 0.54 -24.57 0.54 0.41 -7.73 0.68 0.63 -15.09 0.56 0.48
16 MovieLens 4096 64 -12.56 0.69 0.61 -26.78 0.54 0.40 -5.08 0.69 0.65 -14.23 0.59 0.50
17 MovieLens 4096 128 -6.22 0.68 0.64 -9.22 0.53 0.48 -2.70 0.69 0.67 -4.97 0.58 0.55
table.groupby(["Dataset"]).mean()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 2389.333333 74.666667 2.441111 0.583333 0.593333 2.992222 0.608889 0.627778 -1.635556 0.815556 0.804444 -3.427778 0.651111 0.627778
MovieLens 2389.333333 74.666667 -2.236667 0.662222 0.646667 -13.193333 0.534444 0.464444 -3.142222 0.690000 0.667778 -6.177778 0.577778 0.542222
table.groupby(["Dataset"]).std()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 1354.624671 42.332021 5.166376 0.036401 0.014142 4.705815 0.006009 0.030732 1.494114 0.00527 0.012360 3.672849 0.011667 0.025386
MovieLens 1354.624671 42.332021 7.374224 0.052863 0.050498 11.644862 0.005270 0.056593 3.186737 0.00500 0.024889 6.675647 0.008333 0.040552
table.groupby(["Dataset"]).max()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 4096 128 12.66 0.65 0.62 9.08 0.62 0.67 0.07 0.82 0.82 4.59 0.67 0.67
MovieLens 4096 128 10.42 0.74 0.71 -0.08 0.54 0.53 -0.07 0.70 0.69 -0.06 0.59 0.58
table.groupby(["Dataset"]).min()
Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
Dataset
LastFM1k 1024 32 -4.53 0.52 0.57 -3.11 0.60 0.59 -4.33 0.81 0.78 -8.86 0.64 0.59
MovieLens 1024 32 -12.56 0.57 0.54 -32.40 0.53 0.37 -8.41 0.68 0.63 -15.09 0.56 0.48

SAE group recommendation performance for average aggregation function and random groups

experiment_ids = ['333391697323445885', '523100174176986081']
generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="average",
    main_note="sizes_L2_without_acts",
    note_to_compare="sizes_L2_with_acts",
    group_type="random"
)
Dataset Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
0 LastFM1k 1024 32 39.27 0.40 0.56 0.91 0.66 0.67 -0.09 0.75 0.75 0.91 0.56 0.56
1 LastFM1k 1024 64 19.40 0.43 0.51 -1.66 0.66 0.65 0.43 0.75 0.75 4.50 0.55 0.57
2 LastFM1k 1024 128 44.43 0.36 0.53 -2.32 0.66 0.64 -0.58 0.75 0.75 2.60 0.56 0.57
3 LastFM1k 2048 32 8.57 0.50 0.54 6.14 0.66 0.70 -2.43 0.76 0.75 -8.47 0.59 0.54
4 LastFM1k 2048 64 34.90 0.42 0.57 1.83 0.66 0.67 -1.41 0.76 0.75 -0.80 0.58 0.58
5 LastFM1k 2048 128 2.22 0.50 0.51 -1.67 0.66 0.65 -2.62 0.77 0.75 2.38 0.58 0.60
6 LastFM1k 4096 32 12.29 0.36 0.41 6.08 0.67 0.71 -3.30 0.76 0.74 -5.57 0.57 0.53
7 LastFM1k 4096 64 11.49 0.36 0.40 6.01 0.66 0.70 -1.31 0.75 0.74 -2.93 0.58 0.56
8 LastFM1k 4096 128 38.52 0.35 0.49 -0.27 0.66 0.66 -0.05 0.76 0.75 -0.28 0.56 0.56
9 MovieLens 1024 32 14.30 0.59 0.67 -9.61 0.57 0.52 -3.51 0.69 0.66 -6.86 0.56 0.52
10 MovieLens 1024 64 8.38 0.61 0.66 -3.01 0.57 0.55 -2.21 0.69 0.68 -3.96 0.55 0.53
11 MovieLens 1024 128 13.58 0.54 0.62 -0.75 0.57 0.57 -0.19 0.69 0.69 -0.64 0.54 0.54
12 MovieLens 2048 32 2.79 0.63 0.64 -30.69 0.57 0.40 -15.44 0.69 0.58 -23.41 0.55 0.42
13 MovieLens 2048 64 21.38 0.55 0.67 -11.98 0.58 0.51 -4.33 0.69 0.66 -4.51 0.55 0.52
14 MovieLens 2048 128 7.21 0.62 0.66 -5.10 0.57 0.54 -2.79 0.69 0.67 -4.35 0.56 0.53
15 MovieLens 4096 32 32.96 0.57 0.75 -25.10 0.58 0.43 -14.75 0.69 0.59 -19.18 0.54 0.44
16 MovieLens 4096 64 31.83 0.54 0.71 -25.12 0.57 0.43 -11.50 0.69 0.61 -15.95 0.53 0.45
17 MovieLens 4096 128 12.13 0.62 0.69 -7.83 0.56 0.52 -4.75 0.69 0.65 -4.58 0.54 0.51

SAE group recommendation performance for average aggregation function and divergent groups

experiment_ids = ['333391697323445885', '523100174176986081']
generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="average",
    main_note="sizes_L2_without_acts",
    note_to_compare="sizes_L2_with_acts",
    group_type="div"
)
Dataset Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
0 LastFM1k 1024 32 6.63 0.50 0.54 3.06 0.63 0.65 0.34 0.67 0.67 -3.59 0.46 0.45
1 LastFM1k 1024 64 9.33 0.46 0.51 -5.03 0.61 0.58 -0.73 0.66 0.66 -4.82 0.44 0.42
2 LastFM1k 1024 128 -11.23 0.41 0.37 -5.79 0.60 0.57 -1.57 0.66 0.65 2.69 0.42 0.43
3 LastFM1k 2048 32 36.78 0.43 0.59 12.52 0.62 0.69 3.14 0.68 0.70 -3.27 0.48 0.47
4 LastFM1k 2048 64 0.27 0.45 0.45 5.77 0.61 0.65 2.46 0.67 0.69 2.01 0.46 0.47
5 LastFM1k 2048 128 -30.56 0.47 0.32 -6.69 0.61 0.57 -2.09 0.66 0.64 6.28 0.44 0.47
6 LastFM1k 4096 32 19.15 0.52 0.61 14.50 0.62 0.71 2.02 0.68 0.69 0.91 0.47 0.47
7 LastFM1k 4096 64 25.57 0.47 0.58 12.32 0.61 0.69 2.14 0.68 0.69 3.10 0.46 0.48
8 LastFM1k 4096 128 11.44 0.45 0.50 1.57 0.61 0.62 0.63 0.66 0.67 8.08 0.45 0.48
9 MovieLens 1024 32 -100.00 0.15 0.00 -60.34 0.43 0.17 -32.19 0.62 0.42 -59.89 0.45 0.18
10 MovieLens 1024 64 -41.95 0.13 0.08 -31.46 0.42 0.29 -17.37 0.62 0.52 -27.79 0.46 0.34
11 MovieLens 1024 128 0.00 0.12 0.12 -14.24 0.42 0.36 -7.62 0.63 0.58 -10.06 0.44 0.39
12 MovieLens 2048 32 -100.00 0.15 0.00 -81.01 0.44 0.08 -48.99 0.63 0.32 -86.48 0.43 0.06
13 MovieLens 2048 64 -100.00 0.12 0.00 -70.60 0.43 0.13 -41.27 0.62 0.37 -67.95 0.44 0.14
14 MovieLens 2048 128 -100.00 0.13 0.00 -50.84 0.40 0.20 -25.34 0.61 0.45 -43.12 0.42 0.24
15 MovieLens 4096 32 -100.00 0.11 0.00 -72.99 0.45 0.12 -42.68 0.64 0.37 -76.18 0.47 0.11
16 MovieLens 4096 64 -100.00 0.10 0.00 -74.13 0.45 0.12 -42.10 0.63 0.37 -69.90 0.46 0.14
17 MovieLens 4096 128 -100.00 0.13 0.00 -55.44 0.40 0.18 -27.74 0.62 0.45 -48.98 0.42 0.21

Kontrola, ze common features taky nefailuji

experiment_ids = ['333391697323445885', '523100174176986081']
generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="common_features",
    main_note="sizes_L2_without_acts",
    note_to_compare="sizes_L2_with_acts",
    group_type="random"
)
Dataset Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
0 LastFM1k 1024 32 125.71 0.24 0.55 22.98 0.54 0.66 33.77 0.55 0.73 94.80 0.27 0.53
1 LastFM1k 1024 64 158.54 0.17 0.45 8.72 0.60 0.65 22.96 0.60 0.74 36.23 0.36 0.49
2 LastFM1k 1024 128 63.17 0.25 0.41 8.03 0.60 0.65 13.83 0.64 0.73 21.31 0.42 0.51
3 LastFM1k 2048 32 404.94 0.09 0.46 368.32 0.15 0.68 252.54 0.21 0.74 652.80 0.07 0.53
4 LastFM1k 2048 64 118.59 0.20 0.43 23.35 0.54 0.66 45.31 0.52 0.75 90.01 0.31 0.59
5 LastFM1k 2048 128 74.94 0.27 0.47 12.66 0.59 0.66 17.31 0.62 0.73 33.95 0.40 0.53
6 LastFM1k 4096 32 inf 0.00 0.42 425.22 0.13 0.68 395.69 0.15 0.74 1363.94 0.04 0.55
7 LastFM1k 4096 64 -3.83 0.40 0.38 39.50 0.48 0.68 70.60 0.44 0.75 161.86 0.21 0.55
8 LastFM1k 4096 128 1.27 0.38 0.38 12.05 0.58 0.65 29.38 0.58 0.75 56.22 0.34 0.54
9 MovieLens 1024 32 223.30 0.17 0.57 -0.07 0.49 0.49 15.07 0.51 0.59 19.56 0.37 0.45
10 MovieLens 1024 64 5.82 0.67 0.71 9.08 0.44 0.48 12.73 0.54 0.61 21.78 0.38 0.47
11 MovieLens 1024 128 8.88 0.66 0.72 12.22 0.46 0.51 8.15 0.59 0.64 14.30 0.42 0.48
12 MovieLens 2048 32 69.23 0.30 0.51 17.67 0.44 0.51 28.87 0.47 0.61 70.34 0.28 0.48
13 MovieLens 2048 64 103.50 0.27 0.54 15.63 0.41 0.48 19.31 0.51 0.61 29.63 0.34 0.45
14 MovieLens 2048 128 38.36 0.50 0.69 12.33 0.45 0.50 6.07 0.59 0.63 13.96 0.42 0.48
15 MovieLens 4096 32 304.49 0.15 0.62 25.14 0.42 0.53 36.89 0.47 0.64 86.28 0.27 0.51
16 MovieLens 4096 64 9.34 0.53 0.58 12.83 0.46 0.52 16.08 0.55 0.63 22.84 0.40 0.50
17 MovieLens 4096 128 1.89 0.50 0.51 7.41 0.48 0.52 8.46 0.58 0.63 19.38 0.41 0.49
experiment_ids = ['333391697323445885', '523100174176986081']
generate_recommendations_with_comparision(
    experiment_ids,
    aggregation_function="common_features",
    main_note="sizes_L2_without_acts",
    note_to_compare="sizes_L2_with_acts",
    group_type="div"
)
Dataset Dimensions TopK G/mean Pop U/mean U/min
% change compare main % change compare main % change compare main % change compare main
0 LastFM1k 1024 32 1217.33 0.03 0.44 439.85 0.11 0.60 451.85 0.12 0.65 1012.41 0.04 0.40
1 LastFM1k 1024 64 516.68 0.06 0.38 389.98 0.11 0.54 309.89 0.15 0.61 768.76 0.04 0.32
2 LastFM1k 1024 128 105.86 0.14 0.29 140.90 0.23 0.55 120.85 0.27 0.60 265.66 0.09 0.34
3 LastFM1k 2048 32 1381.92 0.03 0.50 490.33 0.11 0.66 508.74 0.11 0.68 1100.02 0.04 0.43
4 LastFM1k 2048 64 927.59 0.03 0.34 448.22 0.11 0.61 440.90 0.12 0.65 1032.53 0.04 0.41
5 LastFM1k 2048 128 34.42 0.22 0.30 274.93 0.16 0.58 195.65 0.21 0.63 597.56 0.05 0.34
6 LastFM1k 4096 32 1571.04 0.03 0.56 502.73 0.11 0.67 546.24 0.11 0.68 1171.40 0.04 0.45
7 LastFM1k 4096 64 1473.74 0.03 0.53 474.06 0.11 0.64 486.93 0.11 0.67 1091.36 0.04 0.43
8 LastFM1k 4096 128 1276.53 0.03 0.46 401.81 0.12 0.60 316.04 0.16 0.65 916.63 0.04 0.39
9 MovieLens 1024 32 NaN 0.00 0.00 -10.31 0.21 0.18 49.38 0.23 0.35 80.62 0.06 0.12
10 MovieLens 1024 64 inf 0.00 0.12 31.44 0.21 0.28 56.94 0.30 0.48 101.07 0.11 0.22
11 MovieLens 1024 128 inf 0.00 0.38 9.08 0.23 0.26 13.99 0.40 0.46 75.67 0.14 0.25
12 MovieLens 2048 32 NaN 0.00 0.00 1.56 0.21 0.21 87.48 0.23 0.43 302.45 0.05 0.21
13 MovieLens 2048 64 17.54 0.17 0.20 5.95 0.21 0.22 50.37 0.27 0.40 66.89 0.07 0.12
14 MovieLens 2048 128 -24.13 0.11 0.08 21.50 0.26 0.31 19.39 0.40 0.48 29.13 0.20 0.26
15 MovieLens 4096 32 NaN 0.00 0.00 42.53 0.21 0.29 123.91 0.23 0.51 617.96 0.04 0.31
16 MovieLens 4096 64 NaN 0.00 0.00 18.82 0.21 0.25 74.45 0.24 0.42 224.43 0.07 0.23
17 MovieLens 4096 128 inf 0.00 0.38 43.14 0.25 0.35 33.86 0.36 0.48 88.58 0.13 0.24